#pragma once

#include "simboloinforme.h"
#include "consulta.h"
#include "valor.h"

class Iterable
{
public:
    virtual void inicio() = 0;
    virtual void siguiente() = 0;
    virtual bool hayValor() = 0;

    //SimboloInforme* getSimbolo();
};

class Tupla
{
public:
    virtual Valor getValor(const QString& nombreCampo) const = 0;
    virtual void setValor(const QString& nombreCampo, TIPO_VALOR valor) = 0;
};

class SimboloConsulta : public SimboloInforme, public Iterable, public Tupla
{
public:
    SimboloConsulta(Consulta* consulta);
    virtual ~SimboloConsulta();

    Valor getValor() const { return Valor(); }
//    void setValor(Valor valor) { }

    Valor getValor(const QString& nombreCampo) const;
    void setValor(const QString& nombreCampo, TIPO_VALOR valor) { }

    SimboloInforme* getSimbolo() { return this; }

    void inicio();
    //void fin();
    void siguiente();
    //void anterior();
    bool hayValor();

private:
    Consulta* consulta;
};

